package cn.com.blueInfo.bpm.system.request;

import cn.com.blueInfo.bpm.common.request.BaseDTO;
import cn.com.blueInfo.bpm.common.request.BaseQueryDTO;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;

/**
 * 枚举项表 接收参数机校验
 * @author suxch
 * @since 2025-08-24 01:37:55
 */
@Data
@EqualsAndHashCode(callSuper = true)
@Schema(description = "枚举项 接收参数及校验")
public class DictItemDTO extends BaseDTO {

    /** 字典表ID */
    @NotNull(message = "字典表ID 不能为空")
    @Schema(description = "字典表ID")
    private Long dictId;
    /** 枚举值（存储到业务表的实际值） */
    @NotBlank(message = "枚举值 不能为空")
    @Schema(description = "枚举值（存储到业务表的实际值）")
    private String itemValue;
    /** 枚举标签（展示用） */
    @NotBlank(message = "枚举标签 不能为空")
    @Schema(description = "枚举标签（展示用）")
    private String itemLabel;
    /** 标签颜色（展示用） */
    @Schema(description = "标签颜色（展示用）")
    private String itemColor;
    /** 标签说明 */
    @Schema(description = "标签说明")
    private String description;

    /**
     * 枚举项 接收分页查询参数
     * @author suxch
     * @since 2025-08-21 05:08:55
     */
    @Data
    @EqualsAndHashCode(callSuper = true)
    @Schema(description = "枚举项 接收分页查询参数")
    public static class QueryDTO extends BaseQueryDTO {

        /** 字典表ID */
        @Schema(description = "字典表ID")
        private Long dictId;
        /** 枚举值（存储到业务表的实际值） */
        @Schema(description = "枚举值（存储到业务表的实际值）")
        private String itemValue;
        /** 枚举标签（展示用） */
        @Schema(description = "枚举标签（展示用）")
        private String itemLabel;
        /** 标签颜色（展示用） */
        @Schema(description = "标签颜色（展示用）")
        private String itemColor;
        /** 标签说明 */
        @Schema(description = "标签说明")
        private String description;

    }

    /**
     * 枚举项 接收部分更新参数及校验
     * @author suxch
     * @since 2025-08-21 05:08:55
     */
    @Data
    @EqualsAndHashCode(callSuper = true)
    @Schema(description = "枚举项 接收部分更新参数及校验")
    public static class UpdatePartialDTO extends BaseDTO {

        /** 标签颜色（展示用） */
        @Schema(description = "标签颜色（展示用）")
        private String itemColor;
        /** 标签说明 */
        @Schema(description = "标签说明")
        private String description;

    }

}